home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWEvents / FWKeyF.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  4.3 KB  |  144 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWKeyF.cpp
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWFrameW.hpp"
  11.  
  12. #ifndef FWKEYF_H
  13. #include "FWKeyF.h"
  14. #endif
  15.  
  16. #ifndef FWEVENTH_H
  17. #include "FWEventH.h"
  18. #endif
  19.  
  20. #ifndef FWEVENT_H
  21. #include "FWEvent.h"
  22. #endif
  23.  
  24. #ifndef FWEVEDEF_H
  25. #include "FWEveDef.h"
  26. #endif
  27.  
  28. #ifndef FWVIEW_H
  29. #include "FWSView.h"
  30. #endif
  31.  
  32. //========================================================================================
  33. // Runtime Informations
  34. //========================================================================================
  35.  
  36. #ifdef FW_BUILD_MAC
  37. #pragma segment fwevents
  38. #endif
  39.  
  40. //========================================================================================
  41. // Macros
  42. //========================================================================================
  43.  
  44. #define FW_ISNUMBER(c)         (c >= '0' && c <= '9')
  45. #define FW_ISLETTER(c)        ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
  46.  
  47. #ifdef FW_BUILD_MAC
  48. #define FW_ISBACKSPACE(c)     (c == 0x08)
  49. #define FW_ISARROWKEY(c)    (c == 0x1c || c == 0x1d || c == 0x1e || c == 0x1f)
  50. #endif
  51.  
  52. #ifdef FW_BUILD_WIN
  53. // On windows these are handled as Virtual Keys
  54. #define FW_ISBACKSPACE(c)     FALSE
  55. #define FW_ISARROWKEY(c)    FALSE
  56. #endif
  57.  
  58. //========================================================================================
  59. // CLASS FW_CAlphaNumFilter
  60. //========================================================================================
  61.  
  62. FW_DEFINE_CLASS_M1(FW_CAlphaNumFilter, FW_MEventHandler)
  63.  
  64. //----------------------------------------------------------------------------------------
  65. // FW_CAlphaNumFilter::FW_CAlphaNumFilter
  66. //----------------------------------------------------------------------------------------
  67.  
  68. FW_CAlphaNumFilter::FW_CAlphaNumFilter(Environment* ev, FW_MEventHandler* parent) 
  69.     : FW_MEventHandler()
  70. {
  71.     parent->AdoptEventHandler(ev, this);
  72. }
  73.  
  74. //----------------------------------------------------------------------------------------
  75. // FW_CAlphaNumFilter::~FW_CAlphaNumFilter
  76. //----------------------------------------------------------------------------------------
  77.  
  78. FW_CAlphaNumFilter::~FW_CAlphaNumFilter() 
  79. {
  80. }
  81.  
  82. //----------------------------------------------------------------------------------------
  83. // FW_CAlphaNumFilter::DoCharKey
  84. //----------------------------------------------------------------------------------------
  85.  
  86. FW_Handled FW_CAlphaNumFilter::DoCharKey(Environment* ev, const FW_CCharKeyEvent& keyEvent)
  87. {
  88.     char c = keyEvent.GetChar(ev);
  89.     
  90.     // Allow backspace and arrow keys
  91.     if (FW_ISBACKSPACE(c) || FW_ISARROWKEY(c)) 
  92.         return FW_kNotHandled;
  93.     
  94.     // Allow only 0-9 a-z A-Z characters
  95.     if (FW_ISNUMBER(c) || FW_ISLETTER(c)) 
  96.         return FW_kNotHandled;
  97.     else
  98.         return FW_kHandled;
  99. }
  100.  
  101. //========================================================================================
  102. // CLASS FW_CIntegerFilter
  103. //========================================================================================
  104.  
  105. FW_DEFINE_CLASS_M1(FW_CIntegerFilter, FW_MEventHandler)
  106.  
  107. //----------------------------------------------------------------------------------------
  108. // FW_CIntegerFilter::FW_CIntegerFilter
  109. //----------------------------------------------------------------------------------------
  110.  
  111. FW_CIntegerFilter::FW_CIntegerFilter(Environment* ev, FW_MEventHandler* parent) 
  112.     : FW_MEventHandler()
  113. {
  114.     parent->AdoptEventHandler(ev, this);
  115. }
  116.  
  117. //----------------------------------------------------------------------------------------
  118. // FW_CIntegerFilter::~FW_CIntegerFilter
  119. //----------------------------------------------------------------------------------------
  120.  
  121. FW_CIntegerFilter::~FW_CIntegerFilter() 
  122. {
  123. }
  124.  
  125. //----------------------------------------------------------------------------------------
  126. // FW_CIntegerFilter::DoCharKey
  127. //----------------------------------------------------------------------------------------
  128.  
  129. FW_Handled FW_CIntegerFilter::DoCharKey(Environment* ev, const FW_CCharKeyEvent& keyEvent)
  130. {
  131.     char c = keyEvent.GetChar(ev);
  132.     
  133.     // Allow backspace and arrow keys
  134.     if (FW_ISBACKSPACE(c) || FW_ISARROWKEY(c)) 
  135.         return FW_kNotHandled;
  136.     
  137.     // Allow only 0-9 characters
  138.     if (FW_ISNUMBER(c)) 
  139.         return FW_kNotHandled;
  140.     else
  141.         return FW_kHandled;
  142. }
  143.  
  144.